package project02mutiply;

public class RentalServices {
    private String companyName;//公司名称
    private String companyPhone;//公司电话
    Vehicle[] vehicle = new Vehicle[10];
    private int account = 0;
    private int day;

    public RentalServices(String companyName, String companyPhone) {
        this.companyName = companyName;
        this.companyPhone = companyPhone;
    }

    public String getCompanyName() {
        return companyName;
    }

    public void setCompanyName(String companyName) {
        this.companyName = companyName;
    }

    public String getCompanyPhone() {
        return companyPhone;
    }

    public void setCompanyPhone(String companyPhone) {
        this.companyPhone = companyPhone;
    }

    public int getAccount() {
        return account;
    }

    public void setAccount(int account) {
        this.account = account;
    }

    public int getDay() {
        return day;
    }

    public void setDay(int day) {
        this.day = day;
    }

    /**
     * 采购新车
     *
     * @param v 表示采购的新车
     * @return true表示添加成功， false表示添加失败
     */
    public boolean addVehicle(Vehicle v) {
        if (account >= vehicle.length) {
            return false;
        }
        if (vehicle[account] == null) {
            boolean isNoRepead =isRepead(v.getLicense());
            if(isNoRepead==true){
                System.out.println("车牌号重复");
                return false;
            }
            vehicle[account] = v;//这个地方真的是熬死我了！！！！！！！！！！！（不要放在上面！！！！！）
            account++;
            return true;
        }
        return false;
    }

    /**
     * 判断车牌号是否重复（以便于增加新车时更加规范）
     * @param license 输入的车牌号
     * @return true：表示车牌号重复了,  false:表示车牌号没有重复
     */
    public boolean isRepead(String license){
        for(int i=0;i<account;i++){
            if(vehicle[i].getLicense().equals(license)){//重复
                return true;
            }
        }
        return false;//没有重复
    }
    //显示公司信息和能够出租的车辆
    public void showCompany() {
        int n=0;
        System.out.println("公司名称：" + getCompanyName() + " ,公司电话：" + getCompanyPhone());
        for (int i = 0; i < account; i++) {
            if (vehicle[i].state == false) {
                n++;
                vehicle[i].show();
            }
        }
        System.out.println("本公司现在有"+n+"辆车可以出租");
    }

    /**
     * 显示车辆情况
     */
    public void show(String type) {
        for (int i = 0; i < account; i++) {
            if(vehicle[i].isState()){
                continue;
            }
            if(type.equals("轿车")&&vehicle[i] instanceof Car){
                vehicle[i].show();
            }else if(type.equals("客车")&&vehicle[i] instanceof Bus){
                vehicle[i].show();
            }
        }
    }

    /**
     * 租赁服务
     */
    public Vehicle rentService(String type,String  license) {
        for(int i=0;i<account;i++){
            if(license.equals(vehicle[i].getLicense()) &&vehicle[i].state==false){
                vehicle[i].setState(true);
                return vehicle[i];
            }
        }
        return null;
    }
    /**
     *
     * @param license 需要还车的车牌号
     * @return true:归还成功  false:归还失败
     */
    //状态。数量修改
    public boolean returnVehicle(String license){

//        for(int i=0;i<account;i++){//这样换的时候必须按照租车的顺序才能换，否则还不了
//            if(vehicle[i].state=true){//此处务必注意不能执行一次就跑了！！！！！！
//                if(license.equals(vehicle[i].getLicense())){
//                    vehicle[i].setState(false);
//                    return true;//归还成功
//                }
//                System.out.println("车牌不存在或此车并未被租出，归还失败");
//                return false;
//            }
//            //不能方法放到这儿，放到这就执行一次跑了！
//            /*System.out.println("车牌不存在或此车并未被租出，归还失败");
//                return false;*/
//        }
//        return false;
        for(int i=0;i<account;i++){//这样换的时候必须按照租车的顺序才能换，否则还不了（先判断车牌）
            if(license.equals(vehicle[i].getLicense())){
                if(vehicle[i].state=true){
                    vehicle[i].setState(false);
                    return true;//归还成功
                }
                System.out.println("车牌不存在或此车并未被租出，归还失败");
                return false;
            }
            //不能方法放到这儿，放到这就执行一次跑了！
            /*System.out.println("车牌不存在或此车并未被租出，归还失败");
                return false;*/
        }
        return false;
    }

    /**
     *
     * @param license 需要报废的车辆的车牌
     * @return true；成功报废 false:报废失败
     */
    public boolean scrapVehicle(String license){
            for (int i = 0; i < account ; i++) {
                if (license.equals(vehicle[i].getLicense()) && vehicle[i].state == false) {
                    for(int j=i;j<account-1;j++){
                        vehicle[j] = vehicle[j + 1];
                    }
                    vehicle[account - 1] = null;
                    account--;
                    return true;
                }
            }
        return false;
    }
}
